#ifndef ARRAYLIST_H
#define ARRAYLIST_H

typedef struct {
    /// 指向动态分配的数组
    int *array;
    /// 当前元素数量
    int size;
    /// 当前分配的容量
    int capacity;
} ArrayList;

/// 初始化顺序表
/// \param initialCapacity 初始容量
/// \return 顺序表实例
ArrayList createArrayList(int initialCapacity);
/// 添加元素
/// \param list 顺序表实例
/// \param element 要添加的元素
void addElement(ArrayList *list, int element);
/// 删除元素
/// \param list 顺序表实例
/// \param index 要删除的元素的索引
void removeElement(ArrayList *list, int index);
/// 修改元素
/// \param list 顺序表实例
/// \param index 要修改的元素的索引
/// \param newValue 新的值
void setElement(ArrayList *list, int index, int newValue);
/// 获取元素
/// \param list 顺序表实例
/// \param index 要获取的元素的索引
int getElement(ArrayList *list, int index);
/// 销毁顺序表
/// \param list 顺序表实例
void destroyArrayList(ArrayList *list);

// 作业：实现插入函数

#endif
